Private Branch Exchange (PBX) telephone systems provide telecommunications control to businesses. A variety of mechanisms have been created to allow software applications to interact with a PBX system. Some of these are proprietary and un-published, controlled by vendors for specific PBX implementations. Other PBX integration systems are public, providing openly-documented interfaces and communication protocols.
Over the last few decades, PBX systems have evolved from predominately proprietary hardware computing devices controlled by proprietary software to the point, where now, many PBX systems are software implementations capable of running on commodity computing devices (e.g., computer servers). For example, there are many popular open-source PBX software systems, such as Asterisk® and FreeSwitch®, and many other software PBX systems from commercial vendors, such as Microsoft Corporation.
Historically, PBX software systems use an Application Programming Interface (API) to enable properly-configured software applications to access data from the PBX and to integrate with the PBX and, in some cases, perform actions through the PBX, such as placing a call or changing system, user, and extension settings. Like the PBX systems themselves, some of these APIs are proprietary and are, therefore, controlled and used only by the parties in control of the PBX and APIs. The APIs for Asterisk®, FreeSwitch®, and for hosted PBX systems, such as those provided by Twilio®, are all examples of APIs that are public and therefore can be used by any compliant software application. Multiple software applications can be integrated with a PBX through its API, but each application typically integrates directly with the PBX and, for this reason, many software applications running simultaneously for one or more PBX end users, whether the end user is the initiator or recipient of the call or communication being handled by the PBX, potentially create a serious overload problem on the API of the PBX or on the PBX itself. Such a “direct integration” system 100 is illustrated in FIG. 1, described in greater detail hereinafter.
One solution to attempt to minimize overload problems on the PBX has been the creation of a “middleware” software application to integrate with the PBX through its API, and then to integrate indirectly to other business software applications available to the end user. For example, a number of middleware software applications have been developed that communicate directly with the PBX through its API and then “screen pop” other software applications on a computer display or user interface of the end user—for example, by opening up a window to a third party contact in an address book application when a new phone call with the third party is initiated or received by the PBX end user. However, with this type of middleware solution, the indirect integration is very limited—typically allowing only a limited communication of information or data provided by the PBX, such as a phone number and caller ID, through the middleware to the business software applications. In conventional manner, each business application that is open and displayed to the end user is also able to receive data input directly by the end user into the user interface (or window) associated with each respective software application. Although data or information from these applications can then be provided or displayed back to the end user, there is typically no way for these software applications to share events, event notifications, information, or other data with each other unless such applications are already integrated or connected directly with each other, which is often the case for software applications or modules provided by a single vendor (e.g., Outlook® Calendar, eMail, and Address Book modules, which are integrated in Microsoft Office® suite). Such middleware solutions, however, typically do not have the capability of enabling the plurality of software applications in communication with the middleware (that are typically provided by a plurality of different software vendors and that are not already integrated or part of a common software suite, such as Microsoft Outlook®) to share data dynamically in a multi-directional or multi-occurrence manner with each other and/or with the VoIP PBX end user. A conventional “indirect integration” system 200 is illustrated in FIG. 2, described in greater detail hereinafter.
With the growth of the Internet and public IP networks since the mid-to-late 1990s, a new category of hosted communications, specifically VoIP communications, have become increasingly popular. In addition, with the increase in VoIP communications and increasing use of cloud computing, there has also evolved a number of hosted, VoIP PBX systems. Like other Internet-based or cloud-based business services, a hosted VoIP PBX system allows end users to connect and use PBX services over IP networks from Internet-connected devices, such as VoIP phones, IP phones, SIP phones, desktop computers, and the like. Some of these hosted VoIP PBX services are simply managed and hosted offerings of software-based PBX systems, for example, using open source Asterisk® or FreeSwitch® PBX systems running in a managed data center. Other hosted VoIP PBX systems are proprietary or custom-developed for hosted and managed server environments. Many of these systems provide an API that allows properly-configured software applications to receive or read data from the PBX or perform specific functions through the PBX. Some of these hosted VoIP PBX systems also provide an API or a method for events that occur through the hosted VoIP PBX, such as the initiation or connection of a new phone call, to trigger individual events in other software applications, such as a screen pop of related caller information, the logging of information about a call into other software applications, or the passing of data or information related to the phone call at the time the event is triggered.
What has been missing in the industry, however, is a comprehensive and unified system that enables a plurality of client-side software applications accessible to an end user on the VoIP PBX side of a telephonic communication to integrate with a hosted VoIP PBX system, to receive granular event notifications, information, and data from the hosted VoIP PBX, to allow for real-time human input (by the end user) of data or other information pertinent to a specific call or interaction with a third party, and simultaneously to share relevant events, information, and data among and between each other and with the VoIP PBX end user, all in a way that is highly efficient and scalable.
Such a system offers significant benefits to VoIP PBX end users. For example, such a system enables the end user to have many business software applications simultaneously integrated with their hosted VoIP PBX system, and to communicate and share events, notifications, application information, and data related to phone calls, pieces of which may be stored in, managed from, or accessible by separate (typically, business-related) software applications. In addition, such a system enables a VoIP PBX end user to input new information or to modify existing information in one or more such software applications about the third party on the other end of (or otherwise relevant to) the phone call, such as information that the end user obtains about the third party during the call, that can then be input into the system by the end user and then shared dynamically and automatically with one or more or all of the various integrated software applications and which then provides such integrated applications with the ability to generate or obtain even further information about the third party or the phone call with the third party, share such information with the other applications, and to share such information with the end user. Such a system provides the most relevant and accurate data, from otherwise non-integrated software applications, to an end user on the VoIP PBX end of the call, and helps to make sure the data maintained by or otherwise accessible to the multiple business applications is as complete, up-to-date, and consistent as possible across the plurality of software applications and available to the VoIP PBX end user.
The technology and improvements described herein provide exemplary and comprehensive methods, hardware and software systems, applications, and novel techniques for allowing multiple software applications to integrate with a hosted VoIP PBX and to synchronize data with each other and with the VoIP PBX end user in a highly scalable and efficient manner that, to date, has not heretofore been available and affordable, in a non-proprietary system.
The present technologies, as described and shown in greater detail hereinafter, address and teach one or more of the above-referenced capabilities, needs, and features that are useful for a variety of businesses and industries as described, taught, and suggested herein in greater detail.